package com.hzlx;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMqRouteConfig {
    // 1. 声明主题交换机（所有微服务共享）
    @Bean
    public TopicExchange businessExchange() {
        // 交换机名称：business.exchange，持久化
        return new TopicExchange("business.exchange", true, false);
    }

    // 2. 声明用户服务队列（仅用户服务监听）
    @Bean
    public Queue userServiceQueue() {
        // 队列名称：user.service.queue，持久化
        return new Queue("user.service.queue", true);
    }

    // 3. 绑定队列到交换机（指定路由键）
    @Bean
    public Binding userServiceBinding() {
        // 路由键：user.service.#（接收user.service开头的所有消息）
        return BindingBuilder.bind(userServiceQueue())
                .to(businessExchange())
                .with("user.service.#");
    }
}